🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / car / src / main / kotlin / org / meshtastic / feature / car / screens / HomeScreen.kt
Displaying Raw • Download
feature/car/src/main/kotlin/org/meshtastic/feature/car/screens/HomeScreen.kt 4e15ef1c7f68f8c683fe8b7ff741a5167e154d2e (4e15ef1c) Text, 16.35 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.car.screens
Tff7b72import T7ee787androidx.car.app.AppManager
Tff7b72import T7ee787androidx.car.app.CarContext
Tff7b72import T7ee787androidx.car.app.CarToast
Tff7b72import T7ee787androidx.car.app.Screen
Tff7b72import T7ee787androidx.car.app.messaging.model.CarMessage
Tff7b72import T7ee787androidx.car.app.messaging.model.ConversationCallback
Tff7b72import T7ee787androidx.car.app.messaging.model.ConversationItem
Tff7b72import T7ee787androidx.car.app.model.Action
Tff7b72import T7ee787androidx.car.app.model.Alert
Tff7b72import T7ee787androidx.car.app.model.AlertCallback
Tff7b72import T7ee787androidx.car.app.model.CarColor
Tff7b72import T7ee787androidx.car.app.model.CarIcon
Tff7b72import T7ee787androidx.car.app.model.CarText
Tff7b72import T7ee787androidx.car.app.model.Header
Tff7b72import T7ee787androidx.car.app.model.ItemList
Tff7b72import T7ee787androidx.car.app.model.ListTemplate
Tff7b72import T7ee787androidx.car.app.model.Pane
Tff7b72import T7ee787androidx.car.app.model.PaneTemplate
Tff7b72import T7ee787androidx.car.app.model.Row
Tff7b72import T7ee787androidx.car.app.model.Tab
Tff7b72import T7ee787androidx.car.app.model.TabContents
Tff7b72import T7ee787androidx.car.app.model.TabTemplate
Tff7b72import T7ee787androidx.car.app.model.Template
Tff7b72import T7ee787androidx.core.app.Person
Tff7b72import T7ee787androidx.core.graphics.drawable.IconCompat
Tff7b72import T7ee787androidx.lifecycle.DefaultLifecycleObserver
Tff7b72import T7ee787androidx.lifecycle.LifecycleOwner
Tff7b72import T7ee787co.touchlab.kermit.Logger
Tff7b72import T7ee787kotlinx.coroutines.CoroutineScope
Tff7b72import T7ee787kotlinx.coroutines.Dispatchers
Tff7b72import T7ee787kotlinx.coroutines.SupervisorJob
Tff7b72import T7ee787kotlinx.coroutines.cancel
Tff7b72import T7ee787kotlinx.coroutines.launch
Tff7b72import T7ee787org.meshtastic.core.model.ConnectionState
Tff7b72import T7ee787org.meshtastic.core.model.NodeAddress
Tff7b72import T7ee787org.meshtastic.core.model.nodeColorsFromNum
Tff7b72import T7ee787org.meshtastic.feature.car.R
Tff7b72import T7ee787org.meshtastic.feature.car.alerts.EmergencyHandler
Tff7b72import T7ee787org.meshtastic.feature.car.model.ConversationUi
Tff7b72import T7ee787org.meshtastic.feature.car.service.CarStateCoordinator
Tff7b72import T7ee787org.meshtastic.feature.car.util.CarScreenDataBuilder
Tff7b72import T7ee787org.meshtastic.feature.car.util.NodeSubtitleFormatter
Tff7b72import T7ee787java.util.Locale
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffTooManyFunctionsTa5d6ff"Tb4b4b4)
Tff7b72class T56d364HomeScreenTb4b4b4(
Te6edf3carContextTb4b4b4: Te6edf3CarContextTb4b4b4,
Tff7b72private Tff7b72val Te6edf3stateCoordinatorTb4b4b4: Te6edf3CarStateCoordinatorTb4b4b4,
Tff7b72private Tff7b72val Te6edf3emergencyHandlerTb4b4b4: Te6edf3EmergencyHandlerTb4b4b4,
Tb4b4b4) Tb4b4b4: Te6edf3ScreenTb4b4b4(Te6edf3carContextTb4b4b4) Tb4b4b4{
Tff7b72private Tff7b72var Te6edf3selectedTabIdTb4b4b4: Tffa657String Tff7b72= Te6edf3TAB_ID_MESSAGES
Tff7b72private Tff7b72val Te6edf3scope Tff7b72= Te6edf3CoroutineScopeTb4b4b4(Te6edf3SupervisorJobTb4b4b4(Tb4b4b4) Tff7b72+ Te6edf3DispatchersTb4b4b4.Te6edf3MainTb4b4b4.Te6edf3immediateTb4b4b4)
Tff7b72private Tff7b72var Te6edf3previousConnectionStateTb4b4b4: Te6edf3ConnectionState Tff7b72= Te6edf3ConnectionStateTb4b4b4.Te6edf3Disconnected
Tff7b72init Tb4b4b4{
Te6edf3lifecycleTb4b4b4.Te6edf3addObserverTb4b4b4(
Tff7b72object Tb4b4b4: T56d364DefaultLifecycleObserver Tb4b4b4{
Tff7b72override Tff7b72fun Td2a8ffonStartTb4b4b4(Te6edf3ownerTb4b4b4: Te6edf3LifecycleOwnerTb4b4b4) Tb4b4b4{
Te6edf3observeStateTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffonDestroyTb4b4b4(Te6edf3ownerTb4b4b4: Te6edf3LifecycleOwnerTb4b4b4) Tb4b4b4{
Te6edf3scopeTb4b4b4.Te6edf3cancelTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffobserveStateTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{ Te6edf3stateCoordinatorTb4b4b4.Te6edf3messagingStateTb4b4b4.Te6edf3collect Tb4b4b4{ Te6edf3invalidateTb4b4b4(Tb4b4b4) Tb4b4b4} Tb4b4b4}
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{ Te6edf3stateCoordinatorTb4b4b4.Te6edf3nodeDashboardStateTb4b4b4.Te6edf3collect Tb4b4b4{ Te6edf3invalidateTb4b4b4(Tb4b4b4) Tb4b4b4} Tb4b4b4}
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{ Te6edf3stateCoordinatorTb4b4b4.Te6edf3localStatsStateTb4b4b4.Te6edf3collect Tb4b4b4{ Te6edf3invalidateTb4b4b4(Tb4b4b4) Tb4b4b4} Tb4b4b4}
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{
Te6edf3stateCoordinatorTb4b4b4.Te6edf3sessionStateTb4b4b4.Te6edf3collect Tb4b4b4{ Te6edf3state Tff7b72-Tff7b72>
Tff7b72val Te6edf3newState Tff7b72= Te6edf3stateTb4b4b4.Te6edf3connectionStatus
Tff7b72if Tb4b4b4(Te6edf3previousConnectionState Tff7b72=Tff7b72= Te6edf3ConnectionStateTb4b4b4.Te6edf3Disconnected Tff7b72&Tff7b72& Te6edf3newState Tff7b72=Tff7b72= Te6edf3ConnectionStateTb4b4b4.Te6edf3ConnectedTb4b4b4) Tb4b4b4{
Te6edf3CarToastTb4b4b4.Te6edf3makeTextTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_reconnectedTb4b4b4)Tb4b4b4, Te6edf3CarToastTb4b4b4.Te6edf3LENGTH_SHORTTb4b4b4)
Tb4b4b4.Te6edf3showTb4b4b4(Tb4b4b4)
Tb4b4b4}
Te6edf3previousConnectionState Tff7b72= Te6edf3newState
Te6edf3invalidateTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3scopeTb4b4b4.Te6edf3launch Tb4b4b4{
Te6edf3emergencyHandlerTb4b4b4.Te6edf3latestAlertTb4b4b4.Te6edf3collect Tb4b4b4{ Te6edf3alert Tff7b72-Tff7b72>
Tff7b72if Tb4b4b4(Te6edf3alert Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3alertTb4b4b4.Te6edf3isActiveTb4b4b4) Tb4b4b4{
Te6edf3showEmergencyAlertTb4b4b4(Te6edf3alertTb4b4b4.Te6edf3nodeNumTb4b4b4, Te6edf3alertTb4b4b4.Te6edf3nodeNameTb4b4b4, Te6edf3alertTb4b4b4.Te6edf3messageTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffshowEmergencyAlertTb4b4b4(Te6edf3nodeNumTb4b4b4: Tffa657IntTb4b4b4, Te6edf3nodeNameTb4b4b4: Tffa657StringTb4b4b4, Te6edf3messageTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3carAppApiLevel Tff7b72< Te6edf3MIN_ALERT_CAR_API_LEVELTb4b4b4) Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3wTb4b4b4(Te6edf3tag Tff7b72= Ta5d6ff"Ta5d6ffHomeScreenTa5d6ff"Tb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffAlert API unavailable on car API Tffd700${Te6edf3carContextTb4b4b4.Te6edf3carAppApiLevelTffd700}Ta5d6ff" Tb4b4b4}
Tff7b72return
Tb4b4b4}
Tff7b72val Te6edf3alert Tff7b72=
Te6edf3AlertTb4b4b4.Te6edf3BuilderTb4b4b4(
Te6edf3nodeNumTb4b4b4,
Te6edf3CarTextTb4b4b4.Te6edf3createTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_emergency_fromTb4b4b4, Te6edf3nodeNameTb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3ALERT_DURATION_MSTb4b4b4.Te6edf3toLongTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3setSubtitleTb4b4b4(Te6edf3CarTextTb4b4b4.Te6edf3createTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addActionTb4b4b4(
Te6edf3ActionTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_dismissTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setOnClickListener Tb4b4b4{ Te6edf3emergencyHandlerTb4b4b4.Te6edf3dismissAlertTb4b4b4(Te6edf3nodeNumTb4b4b4) Tb4b4b4}
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3setCallbackTb4b4b4(
Tff7b72object Tb4b4b4: T56d364AlertCallback Tb4b4b4{
Tff7b72override Tff7b72fun Td2a8ffonCancelTb4b4b4(Te6edf3reasonTb4b4b4: Tffa657IntTb4b4b4) Tb4b4b4{
Te6edf3emergencyHandlerTb4b4b4.Te6edf3dismissAlertTb4b4b4(Te6edf3nodeNumTb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffonDismissTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3emergencyHandlerTb4b4b4.Te6edf3dismissAlertTb4b4b4(Te6edf3nodeNumTb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Te6edf3carContextTb4b4b4.Te6edf3getCarServiceTb4b4b4(Te6edf3AppManagerTff7b72::Te6edf3classTb4b4b4.Te6edf3javaTb4b4b4)Tb4b4b4.Te6edf3showAlertTb4b4b4(Te6edf3alertTb4b4b4)
Tb4b4b4}
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffReturnCountTa5d6ff"Tb4b4b4)
Tff7b72override Tff7b72fun Td2a8ffonGetTemplateTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3Template Tb4b4b4{
Tff7b72val Te6edf3connectionStatus Tff7b72= Te6edf3stateCoordinatorTb4b4b4.Te6edf3sessionStateTb4b4b4.Te6edf3valueTb4b4b4.Te6edf3connectionStatus
Tff7b72if Tb4b4b4(Te6edf3connectionStatus Tff7b72=Tff7b72= Te6edf3ConnectionStateTb4b4b4.Te6edf3Disconnected Tff7b72|Tff7b72| Te6edf3connectionStatus Tff7b72=Tff7b72= Te6edf3ConnectionStateTb4b4b4.Te6edf3DeviceSleepTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3buildDisconnectedTemplateTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72val Te6edf3messaging Tff7b72= Te6edf3stateCoordinatorTb4b4b4.Te6edf3messagingStateTb4b4b4.Te6edf3value
Tff7b72if Tb4b4b4(Te6edf3messagingTb4b4b4.Te6edf3channelsTb4b4b4.Te6edf3isEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3buildOnboardingTemplateTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72val Te6edf3messagingTab Tff7b72=
Te6edf3TabTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setContentIdTb4b4b4(Te6edf3TAB_ID_MESSAGESTb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_tab_messagesTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setIconTb4b4b4(Te6edf3CarIconTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3IconCompatTb4b4b4.Te6edf3createWithResourceTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3RTb4b4b4.Te6edf3drawableTb4b4b4.Te6edf3ic_car_messageTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3nodesTab Tff7b72=
Te6edf3TabTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setContentIdTb4b4b4(Te6edf3TAB_ID_NODESTb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_tab_nodesTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setIconTb4b4b4(Te6edf3CarIconTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3IconCompatTb4b4b4.Te6edf3createWithResourceTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3RTb4b4b4.Te6edf3drawableTb4b4b4.Te6edf3ic_car_nodesTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3statusTab Tff7b72=
Te6edf3TabTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setContentIdTb4b4b4(Te6edf3TAB_ID_STATUSTb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_tab_statusTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setIconTb4b4b4(Te6edf3CarIconTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3IconCompatTb4b4b4.Te6edf3createWithResourceTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3RTb4b4b4.Te6edf3drawableTb4b4b4.Te6edf3ic_car_statusTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3TabTemplateTb4b4b4.Te6edf3BuilderTb4b4b4(
Tff7b72object Tb4b4b4: T56d364TabTemplateTb4b4b4.Te6edf3TabCallback Tb4b4b4{
Tff7b72override Tff7b72fun Td2a8ffonTabSelectedTb4b4b4(Te6edf3tabContentIdTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Te6edf3selectedTabId Tff7b72= Te6edf3tabContentId
Te6edf3invalidateTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3setHeaderActionTb4b4b4(Te6edf3ActionTb4b4b4.Te6edf3APP_ICONTb4b4b4)
Te6edf3addTabTb4b4b4(Te6edf3messagingTabTb4b4b4)
Te6edf3addTabTb4b4b4(Te6edf3nodesTabTb4b4b4)
Te6edf3addTabTb4b4b4(Te6edf3statusTabTb4b4b4)
Te6edf3setTabContentsTb4b4b4(Te6edf3getTabContentsTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffgetTabContentsTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3TabContents Tb4b4b4{
Tff7b72val Te6edf3template Tff7b72=
Tff7b72when Tb4b4b4(Te6edf3selectedTabIdTb4b4b4) Tb4b4b4{
Te6edf3TAB_ID_MESSAGES Tff7b72-Tff7b72> Te6edf3buildMessagingListTb4b4b4(Tb4b4b4)
Te6edf3TAB_ID_NODES Tff7b72-Tff7b72> Te6edf3buildNodeListTb4b4b4(Tb4b4b4)
Te6edf3TAB_ID_STATUS Tff7b72-Tff7b72> Te6edf3buildStatusListTb4b4b4(Tb4b4b4)
Tff7b72else Tff7b72-Tff7b72> Te6edf3buildMessagingListTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72return Te6edf3TabContentsTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffbuildMessagingListTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3Template Tb4b4b4{
Tff7b72val Te6edf3state Tff7b72= Te6edf3stateCoordinatorTb4b4b4.Te6edf3messagingStateTb4b4b4.Te6edf3value
Tff7b72val Te6edf3listBuilder Tff7b72= Te6edf3ItemListTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3validConversations Tff7b72= Te6edf3stateTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3lastMessageTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4) Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3validConversationsTb4b4b4.Te6edf3isEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3listBuilderTb4b4b4.Te6edf3setNoItemsMessageTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_no_messagesTb4b4b4)Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72val Te6edf3selfPerson Tff7b72= Te6edf3buildSelfPersonTb4b4b4(Tb4b4b4)
Te6edf3validConversationsTb4b4b4.Te6edf3takeTb4b4b4(Te6edf3CarScreenDataBuilderTb4b4b4.Te6edf3MAX_CONVERSATIONSTb4b4b4)Tb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3conversation Tff7b72-Tff7b72>
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(Te6edf3buildConversationItemTb4b4b4(Te6edf3conversationTb4b4b4, Te6edf3selfPersonTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3ListTemplateTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3setSingleListTb4b4b4(Te6edf3listBuilderTb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffbuildSelfPersonTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3Person Tb4b4b4{
Tff7b72val Te6edf3myName Tff7b72= Te6edf3stateCoordinatorTb4b4b4.Te6edf3sessionStateTb4b4b4.Te6edf3valueTb4b4b4.Te6edf3meshName Tff7b72?: Ta5d6ff"Ta5d6ffMeTa5d6ff"
Tff7b72return Te6edf3PersonTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3setNameTb4b4b4(Te6edf3myNameTb4b4b4)Tb4b4b4.Te6edf3setKeyTb4b4b4(Ta5d6ff"Ta5d6ffselfTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffbuildConversationItemTb4b4b4(Te6edf3conversationTb4b4b4: Te6edf3ConversationUiTb4b4b4, Te6edf3selfPersonTb4b4b4: Te6edf3PersonTb4b4b4)Tb4b4b4: Te6edf3ConversationItem Tb4b4b4{
Tff7b72val Te6edf3senderPerson Tff7b72= Te6edf3PersonTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3setNameTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3displayNameTb4b4b4)Tb4b4b4.Te6edf3setKeyTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3contactKeyTb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3messages Tff7b72= Te6edf3buildCarMessagesTb4b4b4(Te6edf3conversationTb4b4b4, Te6edf3senderPersonTb4b4b4)
Tff7b72val Te6edf3callback Tff7b72=
Tff7b72object Tb4b4b4: T56d364ConversationCallback Tb4b4b4{
Tff7b72override Tff7b72fun Td2a8ffonMarkAsReadTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3stateCoordinatorTb4b4b4.Te6edf3markAsReadTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3contactKeyTb4b4b4)
Tb4b4b4}
Tff7b72override Tff7b72fun Td2a8ffonTextReplyTb4b4b4(Te6edf3replyTextTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4{
Te6edf3stateCoordinatorTb4b4b4.Te6edf3sendMessageTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3contactKeyTb4b4b4, Te6edf3replyTextTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3ConversationItemTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setIdTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3contactKeyTb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3CarTextTb4b4b4.Te6edf3createTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3displayNameTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setMessagesTb4b4b4(Te6edf3messagesTb4b4b4)
Tb4b4b4.Te6edf3setSelfTb4b4b4(Te6edf3selfPersonTb4b4b4)
Tb4b4b4.Te6edf3setConversationCallbackTb4b4b4(Te6edf3callbackTb4b4b4)
Tb4b4b4.Te6edf3setGroupConversationTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3contactKeyTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3NodeAddressTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffbuildCarMessagesTb4b4b4(Te6edf3conversationTb4b4b4: Te6edf3ConversationUiTb4b4b4, Te6edf3senderPersonTb4b4b4: Te6edf3PersonTb4b4b4)Tb4b4b4: Te6edf3ListTff7b72<Te6edf3CarMessageTff7b72> Tff7b72= Te6edf3listOfTb4b4b4(
Te6edf3CarMessageTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setSenderTb4b4b4(Te6edf3senderPersonTb4b4b4)
Tb4b4b4.Te6edf3setBodyTb4b4b4(Te6edf3CarTextTb4b4b4.Te6edf3createTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3lastMessageTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setReceivedTimeEpochMillisTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3lastMessageTimeTb4b4b4)
Tb4b4b4.Te6edf3setReadTb4b4b4(Te6edf3conversationTb4b4b4.Te6edf3unreadCount Tff7b72=Tff7b72= T79c0ff0Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72private Tff7b72fun Td2a8ffbuildNodeListTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3Template Tb4b4b4{
Tff7b72val Te6edf3state Tff7b72= Te6edf3stateCoordinatorTb4b4b4.Te6edf3nodeDashboardStateTb4b4b4.Te6edf3value
Tff7b72val Te6edf3listBuilder Tff7b72= Te6edf3ItemListTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3stateTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3isEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3listBuilderTb4b4b4.Te6edf3setNoItemsMessageTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_no_nodesTb4b4b4)Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72val Te6edf3baseIcon Tff7b72= Te6edf3IconCompatTb4b4b4.Te6edf3createWithResourceTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3RTb4b4b4.Te6edf3drawableTb4b4b4.Te6edf3ic_car_nodesTb4b4b4)
Te6edf3stateTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3forEach Tb4b4b4{ Te6edf3node Tff7b72-Tff7b72>
Tff7b72val Tb4b4b4(Te6edf3_Tb4b4b4, Te6edf3nodeColorTb4b4b4) Tff7b72= Te6edf3nodeColorsFromNumTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3nodeNumTb4b4b4)
Tff7b72val Te6edf3tintedIcon Tff7b72= Te6edf3CarIconTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3baseIconTb4b4b4)Tb4b4b4.Te6edf3setTintTb4b4b4(Te6edf3CarColorTb4b4b4.Te6edf3createCustomTb4b4b4(Te6edf3nodeColorTb4b4b4, Te6edf3nodeColorTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3longNameTb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Te6edf3NodeSubtitleFormatterTb4b4b4.Te6edf3formatTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3nodeTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setImageTb4b4b4(Te6edf3tintedIconTb4b4b4, Te6edf3RowTb4b4b4.Te6edf3IMAGE_TYPE_ICONTb4b4b4)
Tb4b4b4.Te6edf3setBrowsableTb4b4b4(Tff7b72trueTb4b4b4)
Tb4b4b4.Te6edf3setOnClickListener Tb4b4b4{
Te6edf3screenManagerTb4b4b4.Te6edf3pushTb4b4b4(
Te6edf3NodeDetailScreenTb4b4b4(
Te6edf3carContext Tff7b72= Te6edf3carContextTb4b4b4,
Te6edf3nodeProvider Tff7b72= Tb4b4b4{ Te6edf3node Tb4b4b4}Tb4b4b4,
Te6edf3onMessageClick Tff7b72= Tb4b4b4{ Te6edf3contactKey Tff7b72-Tff7b72>
Te6edf3screenManagerTb4b4b4.Te6edf3popTb4b4b4(Tb4b4b4)
Te6edf3selectedTabId Tff7b72= Te6edf3TAB_ID_MESSAGES
Te6edf3stateCoordinatorTb4b4b4.Te6edf3ensureDmConversationTb4b4b4(
Te6edf3contactKeyTb4b4b4,
Te6edf3nodeTb4b4b4.Te6edf3longNameTb4b4b4,
Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_new_conversationTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3invalidateTb4b4b4(Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3ListTemplateTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3setSingleListTb4b4b4(Te6edf3listBuilderTb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffbuildStatusListTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3Template Tb4b4b4{
Tff7b72val Te6edf3stats Tff7b72= Te6edf3stateCoordinatorTb4b4b4.Te6edf3localStatsStateTb4b4b4.Te6edf3value
Tff7b72val Te6edf3listBuilder Tff7b72= Te6edf3ItemListTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3statsTb4b4b4.Te6edf3hasBatteryTb4b4b4) Tb4b4b4{
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_stat_batteryTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Ta5d6ff"Tffd700${Te6edf3statsTb4b4b4.Te6edf3batteryLevelTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_stat_channel_utilTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Tffa657StringTb4b4b4.Te6edf3formatTb4b4b4(Te6edf3LocaleTb4b4b4.Te6edf3getDefaultTb4b4b4(Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff%.1f%%Ta5d6ff"Tb4b4b4, Te6edf3statsTb4b4b4.Te6edf3channelUtilizationTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_stat_air_utilTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Tffa657StringTb4b4b4.Te6edf3formatTb4b4b4(Te6edf3LocaleTb4b4b4.Te6edf3getDefaultTb4b4b4(Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff%.1f%%Ta5d6ff"Tb4b4b4, Te6edf3statsTb4b4b4.Te6edf3airUtilizationTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_stat_nodesTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Ta5d6ff"Tffd700${Te6edf3statsTb4b4b4.Te6edf3onlineNodesTffd700}Ta5d6ff / Tffd700${Te6edf3statsTb4b4b4.Te6edf3totalNodesTffd700}Ta5d6ff"Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_stat_uptimeTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Te6edf3CarScreenDataBuilderTb4b4b4.Te6edf3formatUptimeTb4b4b4(Te6edf3statsTb4b4b4.Te6edf3uptimeSecondsTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3listBuilderTb4b4b4.Te6edf3addItemTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_stat_packetsTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Ta5d6ff"Ta5d6ffTX: Tffd700${Te6edf3statsTb4b4b4.Te6edf3numPacketsTxTffd700}Ta5d6ff / RX: Tffd700${Te6edf3statsTb4b4b4.Te6edf3numPacketsRxTffd700}Ta5d6ff"Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Te6edf3ListTemplateTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3setSingleListTb4b4b4(Te6edf3listBuilderTb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tff7b72private Tff7b72fun Td2a8ffbuildDisconnectedTemplateTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3Template Tff7b72= Te6edf3PaneTemplateTb4b4b4.Te6edf3BuilderTb4b4b4(
Te6edf3PaneTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3addRowTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_disconnectedTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_reconnectingTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setImageTb4b4b4(
Te6edf3CarIconTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3IconCompatTb4b4b4.Te6edf3createWithResourceTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3RTb4b4b4.Te6edf3drawableTb4b4b4.Te6edf3ic_car_warningTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3setHeaderTb4b4b4(
Te6edf3HeaderTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_app_nameTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setStartHeaderActionTb4b4b4(Te6edf3ActionTb4b4b4.Te6edf3APP_ICONTb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tff7b72private Tff7b72fun Td2a8ffbuildOnboardingTemplateTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3Template Tff7b72= Te6edf3PaneTemplateTb4b4b4.Te6edf3BuilderTb4b4b4(
Te6edf3PaneTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3addRowTb4b4b4(
Te6edf3RowTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_onboarding_titleTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3addTextTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_onboarding_textTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setImageTb4b4b4(
Te6edf3CarIconTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3IconCompatTb4b4b4.Te6edf3createWithResourceTb4b4b4(Te6edf3carContextTb4b4b4, Te6edf3RTb4b4b4.Te6edf3drawableTb4b4b4.Te6edf3ic_car_meshtasticTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3setHeaderTb4b4b4(
Te6edf3HeaderTb4b4b4.Te6edf3BuilderTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3setTitleTb4b4b4(Te6edf3carContextTb4b4b4.Te6edf3getStringTb4b4b4(Te6edf3RTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3car_app_nameTb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3setStartHeaderActionTb4b4b4(Te6edf3ActionTb4b4b4.Te6edf3APP_ICONTb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)
Tff7b72companion Tff7b72object Tb4b4b4{
Tff7b72private Tff7b72const Tff7b72val Te6edf3TAB_ID_MESSAGES Tff7b72= Ta5d6ff"Ta5d6ffmessagesTa5d6ff"
Tff7b72private Tff7b72const Tff7b72val Te6edf3TAB_ID_NODES Tff7b72= Ta5d6ff"Ta5d6ffnodesTa5d6ff"
Tff7b72private Tff7b72const Tff7b72val Te6edf3TAB_ID_STATUS Tff7b72= Ta5d6ff"Ta5d6ffstatusTa5d6ff"
Tff7b72private Tff7b72const Tff7b72val Te6edf3MIN_ALERT_CAR_API_LEVEL Tff7b72= T79c0ff8
Tff7b72private Tff7b72const Tff7b72val Te6edf3ALERT_DURATION_MS Tff7b72= T79c0ff1T79c0ff0Te6edf3_000
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.2 - Generated in 0.17s